/**
 * 集合为{1, 11, 111, 1111, ...}
 * 合法的数为上述集合中任意三个数相加得到，注意可以重复
 * 问第K小的合法数是多少？K在[1...333]
 * 由于K比较小，直接生成所有的数。注意去重。
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using vi = vector<int>;

vector<llt> Vec;

void init(){
    vector<llt> a;
    a.push_back(1);
    for(int i=0;i<13;++i){
        a.push_back(a.back() * 10 + 1);
    }
    for(auto i : a)for(auto j : a)for(auto k : a){
        Vec.push_back(i+j+k);
    }
    sort(Vec.begin(), Vec.end());
    Vec.erase(unique(Vec.begin(), Vec.end()), Vec.end());
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    init();
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--){
        int n; cin >> n;
        cout << Vec[n - 1] << endl;
    }
    return 0;
}